package com.huawei.od;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 57. 插入区间
 */
public class TestSix {

    public static void main(String[] args) {
        System.out.println(Arrays.deepToString(insert(new int[][]{{1, 3}, {6, 9}}, new int[]{2, 5})));
    }

    public static int[][] insert(int[][] intervals, int[] newInterval) {
        List<int[]> list = new ArrayList<>();
        boolean flag = false;
        for (int[] current : intervals) {
            // 原左区间的值是否大于新右区间的值 或者 原右区间的值是否小于新左区间的值
            if (current[0] > newInterval[1] || current[1] < newInterval[0]) {
                if (!flag && current[0] > newInterval[1]) {
                    list.add(newInterval);
                    flag = true;
                }
                list.add(current);
            } else {
                // 取两个数组中最小的为左区间值，最大的为右区间值
                newInterval = new int[]{Math.min(current[0], newInterval[0]), Math.max(current[1], newInterval[1])};
            }
        }
        if (!flag) {
            list.add(newInterval);
        }
        return list.toArray(new int[list.size()][2]);
    }
}
